/**———————————————————————————————————————————————————————————————————————————————————————————————— */
//                                ★ 存储
/**———————————————————————————————————————————————————————————————————————————————————————————————— */
/** t图元类型*/
export type PelType = {
    label: string;
    key: string;
    icon?: string;
    enabled?: string;
    disable?: string;
    active?: boolean;
}
/** 工程页面数据集类型*/
export interface ProjectPageSetType {
    /** 页面名称 */
    pageName: string
    /** 页面键 */
    pageKey: string
    /** 画布属性 */
    canvasAttr:  Map<any, any>
    /** 图元数据 */
    pagePelSet: any
}

/** 画布属性类型*/
export type CanvasAttrType = {
    // 🦢 页面
    /** 页面名称 */
    pageName: string
    /** 页面键 */
    pageKey: string
    /** 页面尺寸 */
    pageSize: string
    /** 页面方向 */
    pageOrientation: string
    /** 页面精度 */
    pageAccuracy: string
    /** 页面单位 */
    pageUnit: string

    // 🦢 画布
    /** 画布缩放 */
    canvasScale: number,
    /** 画布背景色 */
    canvasBackColor: string
    /** 画布宽度 */
    canvasWidth: number,
    /** 画布高度 */
    canvasHeight: number,
    // 🦢 格栅
    /** 格栅模式选项:1-无格栅;2-点格栅;3-方格; */
    gridModel: number,
    /** 格栅样式选项:1-像素尺寸;2-均分画布;3-按宽高均分画布;*/
    gridStyle: number,
    /** 格栅间距 */
    gridSpace: number,
    /** 宽等分数 */
    gridBisectionWidthCont: number,
    /** 宽等分数 */
    gridBisectionHeightCont: number,
    /** 格栅点颜色 */
    gridDotColor: string
    /** 小格颜色 */
    gridColorMini: string
    /** 大格颜色 */
    gridColorMax: string
    /** 格栅宽度 */
    gridWidth: number,
    /** 格栅高度 */
    gridHeight: number,

    // 🦢 光标
    /** 显示光标 */
    isShowCursor: boolean,
    /** 光标颜色 */
    cursorColor: string
    /** 光标盒子尺寸 */
    cursorBoxSize: number,
    /** 光标长度 */
    cursorLang: number,
    /** 光标线宽度 */
    cursorLineWidth: number,

    // 🦢 捕捉
    /** 捕捉状态 */
    isCatch: boolean,
    /** 捕捉距离 */
    catchRange: number,

    // 🦢 标尺
    ruleLineColor: string
}

/** 编辑器存储枚举*/
export enum EditorStoreEnums {
    /** 工程列表*/
    PROJECT_LIST = 'projectList',
    /** 工程名称*/
    PROJECT_NAME = 'projectName',
    /** 工程键*/
    PROJECT_KEY = 'projectKey',
    /** 工程保存日期*/
    PROJECT_SAVE_CALENDAR = 'projectSaveCalendar',
    /** 工程页面数据集*/
    PROJECT_PAGE_SET = 'projectPageSet',
    //------------------------------------------
    /** 当前页面索引*/
    CURRENT_PAGE_INDEX = 'currentPageIndex',
    /** 当前页面键*/
    CURRENT_PAGE_KEY = 'currentPageKey',
    /** 当前图元数据集*/
    CURRENT_PEL_SET = 'currentPelSet',
    /** 画布属性 */
    CANVAS_ATTR = "canvasAttr",

    //------------------------------------------
}

/** 编辑器存储类型*/
export interface EditorStoreType {
    /** 工程列表 */
    [EditorStoreEnums.PROJECT_LIST]: string[]
    /** 工程名称 */
    [EditorStoreEnums.PROJECT_NAME]: string
    /** 工程键 */
    [EditorStoreEnums.PROJECT_KEY]: string
    /** 工程保存日期 */
    [EditorStoreEnums.PROJECT_SAVE_CALENDAR]: string
    /** 工程页面数据集 */
    [EditorStoreEnums.PROJECT_PAGE_SET]: ProjectPageSetType[]

    /** 当前页面索引 */
    [EditorStoreEnums.CURRENT_PAGE_INDEX]: number
    /** 当前页面键 */
    [EditorStoreEnums.CURRENT_PAGE_KEY]: string
    /** 当前图元数据集 */
    [EditorStoreEnums.CURRENT_PEL_SET]: string[]

    /** 当前图元数据集 */
    [EditorStoreEnums.CANVAS_ATTR]: CanvasAttrType

    copyPageInfo?: any
    /** 复制画布参数 */
    copyCanvasInfo?: any
}

/**———————————————————————————————————————————————————————————————————————————————————————————————— */
//                                ★ 类型定义
/**———————————————————————————————————————————————————————————————————————————————————————————————— */
/** 坐标类型 */
export type CoordinateType = {
    x: number;
    y: number;
};

/** 动画-类型 */
export type AnimateType = {
    /** 属性说明 */
    label: string,
    /** 动画键 */
    key: string,
    /** 使能状态 */
    enable: boolean,
    /** 动画类别:1-样式;2-变换;3-属性;4-线性;5-路径; */
    opt_an_classify: number,
    /** 动画模式:1-值动画;2-值转换动画;3-自动画; */
    opt_an_model: number,
    /** 使用数据*/
    use_data: {
        /** 使用数据状态:False-父数据;True-子数据; */
        is_use_parent: boolean,
        /** 使用父数据_选项:0_父数据; 1_图元数据;2_设备数据 */
        opt_use_parent_set: number,
        /** 使用子数据_选项: 1_图元数据;2_设备数据 */
        opt_use_sub_set: number,
        /** 父id */
        id_parent: string,
        /** 图元id */
        id_pel_data: string,
        /** 设备id  */
        id_equip_data: string,
    }
    /** 触发动画领域 */
    trigger: number[] | string[],
    /** 使用值选项:1-起始和结束;2-多值; */
    opt_use_val: number,
    /** 线性比例的领域 */
    line_domain: number[] | string[],
    /** 线性比例的范围 */
    line_range: number[] | string[],
    /** 起始和结束 */
    from_to: number[] | string[],
    /** 多值 */
    mult_val?: string,
    /** 路径值 */
    path_val: CoordinateType[],
    /** 路径id */
    path_id: string,
    /** 动画延时 */
    begin: number,
    /** 动画时长 */
    dur: number,
    /** 重复选项:1-无限循环;2-按次重复;3-按时长重复 */
    opt_repeat: number,
    /** 重复次数 */
    repeat_count: number,
    /** 重复时长 */
    repeat_dur: number,
};

/** 控制图标类型 */
export type CtrlIconType = {
    type: string,
    /** 图元键 */
    key: string,
    /** 标识 */
    label: string,
    /** 位置 */
    coordinate: CoordinateType,
    /** 光标 */
    cursor: string,
    /** 图标 */
    icon: string,
    /** 属性 */
    pelInfo?: object
};

/** 导航类型 */
export type navigationType = {
    label: string;
    key: string;
    frameActive: boolean;
    labelShow: boolean;
    category: string;
};

/** 图元参数类型*/
export type PelInfoType = {
    // 图元名称
    label: string,
    // 图元id
    key: string,
    // 图元类型
    type: string,
    // 图元分类
    category: string,
    // 父键
    parent: string,
    // 位置点
    place?: object,
    // 文本标记标签
    htmls: string,
    // 属性
    attrs: object,
    // 动画
    animations: object,
    // 事件
    events: object,
    // 子属性
    children?: any[],
    // 动画值
    an_vals?: any[]
}

/** 位置-枚举 */
export enum PlaceEnum {
    // -------------------| ★ 左
    TL = 'tl',  // 上左
    L = 'l',    // 左
    BL = 'bl',  // 下左
    // -------------------| ★ 中
    TM = 'tm',  // 上中
    M = 'm',    // 中间
    BM = 'bm',  // 下中
    // -------------------| ★ 右
    TR = 'tr',  // 上右
    radius = 'r',    // 右
    BR = 'br',  // 下右
}

/** 位置类型 */
export type PlaceType = {
    // 🦢 ----------| ★ 左
    [PlaceEnum.TL]: CoordinateType,  /** 上左 */
    [PlaceEnum.L]?: CoordinateType,   /** 左   */
    [PlaceEnum.BL]?: CoordinateType,  /** 下左 */
    // 🦢 ----------| ★ 中
    [PlaceEnum.TM]?: CoordinateType,  /** 上中 */
    [PlaceEnum.M]: CoordinateType,   /** 中间 */
    [PlaceEnum.BM]?: CoordinateType,  /** 下中 */
    // 🦢 ----------| ★ 右
    [PlaceEnum.TR]?: CoordinateType,  /** 上右 */
    [PlaceEnum.radius]?: CoordinateType,   /** 右   */
    [PlaceEnum.BR]: CoordinateType,  /** 下右 */
}

/** 事件_数据类型 */
export type EventType = {
    /** 说明*/
    label: string,
    /** 动作类型*/
    key: string,
    /** 使能状态*/
    enable: false,
    /** 发送数据集:1-图元数据;2-发送数据 */
    opt_send_set: number,
    /** 链接变量 */
    link_key: string,
    /** 发送数据类型:1_文本;2_颜色 */
    opt_send_type: number,
    /** 发送文本*/
    send_text: string,
    /** 发送值*/
    send_val: number,
    /** 发送颜色*/
    send_colour: string,
}

